package com.lenovo.hawk.config;

import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 *  动态操作数据源配置类
 *  @author Hsg
 */
@Slf4j
public class DataSourceHolder {

    /**
     * 单线程配置
     */
    public static final ThreadLocal<String> dataSources = new ThreadLocal<>();

    /**
     * 数据源配置
     */
    public static void setDataSource(String dataSourceType){
        log.info("set dataSource info {}",dataSourceType);
        dataSources.set(dataSourceType);
    }

    /**
     * 获取数据源
     */
    public static String getDataSource(){
        log.info("get dataSource info {}",dataSources.get());
        return dataSources.get();
    }

    /**
     * 清除数据源
     */
    public static void clearDataSource(){
        dataSources.remove();
    }

    /**
     * 数据源的 key集合，用于切换时判断数据源是否存在
     */
    public static List<Object> dataSourceKeys = new ArrayList<>();

    /**
     * 添加数据源keys
     * @param keys
     * @return
     */
    public static boolean addDataSourceKeys(Collection<? extends Object> keys) {
        return dataSourceKeys.addAll(keys);
    }

    /**
     * 判断是否包含数据源
     * @param key 数据源key
     * @return
     */
    public static boolean containDataSourceKey(String key) {
        return dataSourceKeys.contains(key);
    }

}
